/*
 * CustomerAction.java
 * 
 * Created on 02/10/2007, 12:43:14 PM
 * 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package view.actions;

import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.bean.ListaCandidatos;

import model.bean.MiembroLista;
import model.bean.Puesto;
import model.bean.Solicitud;
import model.factory.RecreacionalFactory;
import model.service.ListaCandidatosService;

import model.service.MiembroListaService;
import model.service.PuestoService;
import model.service.SocioService;
import org.apache.commons.io.FileUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import view.common.struts.CustomActionForm;
import view.common.Constants;

import view.common.struts.CustomDispatchAction;

/**
 * @Archivo LoginAction.java
 * @Fecha                @Autor   @Cambios
 * 21/01/2011 02:35:29 PM       moshiro
 */
public class ListaCandidatosAction extends CustomDispatchAction {

    private final static String PRINCIPAL = "principal";
    private final static String REGISTRAR = "registrar";
    private final static String MODIFICAR = "modificar";
    private final static String LISTAR = "listar";

    @Override
    public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse resp) throws Exception {
        CustomActionForm frm = (CustomActionForm) form;
        ListaCandidatos beanSearch = new ListaCandidatos();
        beanSearch.setEstado(Constants.ESTADO_ACTIVO);
        frm.setBeanSearch(beanSearch);
        frm.setBeanList(getListaCandidatosService().listarListaCandidatos(beanSearch));
        frm.setMapList(new HashMap());
        return mapping.findForward(PRINCIPAL);
    }

    public ActionForward consultar(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse resp) throws Exception {
        CustomActionForm frm = (CustomActionForm) form;
        ListaCandidatos beanSearch = (ListaCandidatos) frm.getBeanSearch();
        frm.setBeanList(getListaCandidatosService().listarListaCandidatos(beanSearch));
        return mapping.findForward(PRINCIPAL);
    }

    public ActionForward refrescar(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse resp) throws Exception {
        return mapping.findForward(PRINCIPAL);
    }

    public ActionForward registrar(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse resp) throws Exception {
        CustomActionForm frm = (CustomActionForm) form;
        ListaCandidatos bean = new ListaCandidatos();
        frm.setBean(bean);
        if (frm.getMapList() == null) {
            ListaCandidatos beanSearch = new ListaCandidatos();
            beanSearch.setEstado(Constants.ESTADO_ACTIVO);
            frm.setBeanSearch(beanSearch);
            frm.setBeanList(getListaCandidatosService().listarListaCandidatos(beanSearch));
            frm.setMapList(new HashMap());
        }
        frm.getMapList().put("sociosList", getSociosService().listarSocio(null));
        Puesto filtro = new Puesto();
        filtro.setTipo(1);
        List<Puesto> listaPuesto = getPuestoService().listarPuesto(filtro);
        List<MiembroLista> lista = new ArrayList<MiembroLista>();
        for (Puesto puesto : listaPuesto) {
            MiembroLista miembro = new MiembroLista();
            miembro.setPuesto(puesto);
            lista.add(miembro);
        }
        frm.setFormFileList(lista);
        return mapping.findForward(REGISTRAR);
    }

    public ActionForward eliminar(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse resp) throws Exception {
        CustomActionForm frm = (CustomActionForm) form;
        getListaCandidatosService().eliminarListaCandidatos(Long.valueOf(frm.getSelectedIndex()));
        return unspecified(mapping, form, req, resp);
    }

    public ActionForward modificar(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse resp) throws Exception {
        CustomActionForm frm = (CustomActionForm) form;
        ListaCandidatos beanSelected = new ListaCandidatos(Long.valueOf(frm.getSelectedIndex()));
        ListaCandidatos bean = getListaCandidatosService().obtenerListaCandidatos(beanSelected);
        frm.setBean(bean);

        MiembroLista filtro = new MiembroLista();
        filtro.setListaCandidatos(new ListaCandidatos(beanSelected.getCodigo()));
        frm.setFormFileList(getMiembroListaService().listarMiembroLista(filtro));
        frm.setMapList(new HashMap());
        frm.getMapList().put("sociosList", getSociosService().listarSocio(null));
        return mapping.findForward(MODIFICAR);
    }

    public ActionForward listar(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse resp) throws Exception {
        CustomActionForm frm = (CustomActionForm) form;
        ListaCandidatos beanSelected = new ListaCandidatos(Long.valueOf(frm.getSelectedIndex()));
        ListaCandidatos bean = getListaCandidatosService().obtenerListaCandidatos(beanSelected);
        frm.setBean(bean);

        MiembroLista filtro = new MiembroLista();
        filtro.setListaCandidatos(new ListaCandidatos(bean.getCodigo()));
        frm.setFormFileList(getMiembroListaService().listarMiembroLista(filtro));
        frm.setMapList(new HashMap());
        return mapping.findForward(LISTAR);
    }

    public ActionForward guardar(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse resp) throws Exception {
        CustomActionForm frm = (CustomActionForm) form;
        ListaCandidatos bean = (ListaCandidatos) frm.getBean();

        if (bean.getCodigo() == null) {
            //INSERTAR
            String nombre = frm.getFormFile().getFileName();
            byte[] fileData = frm.getFormFile().getFileData();
            bean.setLogo(nombre);
            File file = new File(getServlet().getServletContext().getRealPath("") + "/img/" + nombre);
            FileUtils.writeByteArrayToFile(file, fileData);
            getListaCandidatosService().agregarListaCandidatos(bean, frm.getFormFileList());
//            ((Solicitud)((CustomActionForm)req.getSession().getAttribute("SolicitudInscripcionForm")).getBean()).getListaCandidatos().setCodigo(bean.getCodigo());
//            ((Solicitud)((CustomActionForm)req.getSession().getAttribute("SolicitudInscripcionForm")).getBean()).getListaCandidatos().setNombre(bean.getNombre());
            return new ActionForward("/SolicitudInscripcion.do?method=registrar&codigoListaCandidato=" + bean.getCodigo() + "&descripcionListaCandidato=" + bean.getNombre(), true);
            //return mapping.findForward("solicitud");
        } else {
            //MODIFICAR
            if (!frm.getFormFile().getFileName().equals("")) {
                String nombre = frm.getFormFile().getFileName();
                byte[] fileData = frm.getFormFile().getFileData();
                bean.setLogo(nombre);
                File file = new File(getServlet().getServletContext().getRealPath("") + "/img/" + nombre);
                FileUtils.writeByteArrayToFile(file, fileData);
            }
            getListaCandidatosService().modificarListaCandidatos(bean, frm.getFormFileList());
            return unspecified(mapping, form, req, resp);
        }

    }

    public ListaCandidatosService getListaCandidatosService() {
        return RecreacionalFactory.getInstance().getListaCandidatosService();
    }

    public MiembroListaService getMiembroListaService() {
        return RecreacionalFactory.getInstance().getMiembroListaService();
    }

    public SocioService getSociosService() {
        return RecreacionalFactory.getInstance().getSocioService();
    }

    public PuestoService getPuestoService() {
        return RecreacionalFactory.getInstance().getPuestoService();
    }
}
